package cn.doit.day05

import scala.io.Source

/**
 * 数据如下  :每个字母代表一个人 ,  统计任意一个人和其他人的共同好友
 * A:B,C,D,F,E,O
 * B:A,C,E,K
 * C:F,A,D,I
 * D:A,E,F,L
 * E:B,C,D,M,L
 * F:A,B,C,D,E,O,M
 * G:A,C,D,E,F
 * H:A,C,D,E,O
 * I:A,O
 * J:B,O
 * K:A,C,D
 * L:D,E,F
 * M:E,F,G
 * O:A,H,I,J
 */
object _01_共同好友案例 {
  def main(args: Array[String]): Unit = {

    //1.读文件中的数据  A:B,C,D,F,E,O
    //2.toList => List("A:B,C,D,F,E,O","B:A,C,E,K"...)
    val list: List[String] = Source.fromFile("data/friends.txt").getLines().toList
    //3.按照：进行切割 ==》 (A,"B,C,D,F,E,O")
    val tuples: List[(String, String)] = list.map(line => {
      val arr: Array[String] = line.split(":")
      (arr(0), arr(1))
    })
    //4.按照,进行切割 ==》 List((A,Array("B","C","D"....)),(),()...)
    val tuples1: List[(String, List[String])] = tuples.map(tp => {
      val list1: List[String] = tp._2.split(",").toList
      (tp._1, list1)
    })
    //5.双重for循环遍历，取交集
    for(my <- 0 until tuples1.size-1){
      for(yourFriend <- my+1 until tuples1.size){
        val sameFriends: List[String] = tuples1(my)._2.intersect(tuples1(yourFriend)._2)
        if(sameFriends.size >0) {
          println( tuples1(my)._1 + "和" + tuples1(yourFriend)._1 + "共同好友是："+ sameFriends)
        }else{
          println( tuples1(my)._1 + "和" + tuples1(yourFriend)._1 + "两个人形同陌路，谁也不认识谁，下辈子争取做个好朋友吧！！！")
        }
      }
    }
  }
}
